﻿using BonjourQuotation.ObjectModel.AccountData;
using BonjourQuotation.ObjectModel.BusinessData;
using BonjourQuotation.ObjectModel.ErrorData;
using BonjourQuotation.ObjectModel.ReportData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BonjourQuotation.DataAccess.Repositories
{
    public interface IReportRepository : IDisposable
    {
        RoomingListReportBData RoomingListReport(int GroupID, int VendorID, DateTime ArrivalDate);
        RoomingListReportBData MasterRoomingListReport(int GroupID);
        TechProgReportBData TechProgReport(int GroupID);
        GVendorListReportBData GroupVendorListReport(int GroupID);
        GroupInvoiceReportBData GroupInvoiceReport(int GroupID);
        GroupInvoiceReportBData GirGroupInvoiceReport(int GroupID, int CustomerID);
        CustomerInvoiceReportBData CustomerInvoiceReport(int CustomerID, DateTime StartDate, DateTime EndDate);
        FrmCustomerGroupRevenueReportBData LoadFrmCountryCustomerGroupRevenueReport();
        CountryCustomerGroupRevenueReportBData CountryCustomerGroupRevenueReport(int NationalityID, DateTime StartDate, DateTime EndDate);
        CustomerPaymentReportBData CustomerPaymentReport(int CustomerID, DateTime StartDate, DateTime EndDate);
        GroupBreakDownReportBData GroupBreakDownReport(DateTime StartDate, DateTime EndDate, bool? IsGir);
        VendorGroupReportBData VendorGroupReport(int VendorID, DateTime Lower, DateTime Upper, string TabName, List<int> StatusIDs, string City, bool? IsPlane, string Category, string CityDrop, bool? IsGir);
        GuideGroupReportBData GuideGroupReport(int GuideID, DateTime Lower, DateTime Upper, bool? IsGir);
        GroupGuideReportBData GroupGuideReport(DateTime Lower, DateTime Upper, bool? IsGir);
        FrmCustomerGroupBalanceReportBData LoadFrmCountryCustomerGroupBalanceReport();
        CountryCustomerGroupBalanceReportBData CountryCustomerGroupBalanceReport(int NationalityID, DateTime StartDate, DateTime EndDate);
        GroupRegionRoomDayReportBData GroupRegionRoomDayReport(DateTime BeginningDate, DateTime EndingDate);
        GroupCityRoomDayReportBData GroupCityRoomDayReport(DateTime BeginningDate, DateTime EndingDate);
        CustomerARDayesReportBData CustomerARDayesReport(int CustomerID, DateTime StartDate, DateTime EndDate);
        FrmCustomerPaymentTypeReportBData LoadFrmCustomerPaymentTypeReport();
        CustomerPaymentTypeReportBData CustomerPaymentTypeReport(int PaymentTypeID, DateTime StartDate, DateTime EndDate);
        CustomerRefundReportBData CustomerRefundReport(int CustomerID, DateTime StartDate, DateTime EndDate);
        FrmGuideListReportBData LoadFrmGuideListReport();
        GuideListReportBData GuideListReport(int RegionID);
        FrmHotelContractsReportBData LoadFrmHotelContractsReport();
        HotelContractsReportBData HotelContractsReport(int RegionID, int SeasonID);
        VConfirmBreakDownReportBData VConfirmBreakDownReport(int VendorID, int GroupID, DateTime ArrivalDate);
        OperationAmexVendorReportBData AuthorizationFormReport(int AuthFormID);
        Dictionary<int, string> FindKeywordInEntity(string PropName, string keyword, string TabName);
        FrmVendorGroupReportBData LoadFrmVCnfStatus();
    }
}
